package com.aier.admin_new.service;

import java.util.List;
import java.util.Map;

import com.aier.admin_new.entity.NameingBean;
import com.aier.classes.entity.ClassPhoto;
import com.aier.classes.entity.ClassPhotoImg;
import com.aier.classes.entity.ClassPhotoType;
import com.aier.classes.entity.Classes;
import com.aier.school.entity.School;
import com.aier.user.entity.CallRoll;
import com.aier.user.entity.CallRollClass;
import com.aier.user.entity.CallRollSchool;

/**
 * 班级service
 * @author Administrator
 *
 */
public interface IClassService {

    //不是班级管理员
    short CLASS_TEACHER_ISADMIN_NO = 0;
    //是班级管理员
    short CLASS_TEACHER_ISADMIN_YES = 1;
    
    /**
     * 根据班级名称查询班级数量
     * @return
     */
    int countClassByName(String cname,int sid,Long uid);

    /**
     * 根据班级id查询班级
     * @return
     */
    Classes searchClassById(Long cid);
    
    /**
     * 根据班级id查询所在学校
     */
    School searchSchoolByCid(Long cid);
    
    /**
     * 根据用户id查询所在班级
     * @return
     */
    List<Classes> searchClassListByUid(Long uid);
    
    /**
     * 分页显示学校班级列表
     * @return
     */
    Map<String, Object> searchClassList(int page,int pagesize, Integer sid,Long cid);
    
    /**
     * 查询学校的所有班级列表
     * @return
     */
    List<Classes> searchClassList(Integer sid);
    
    /**
     * 查询学校的所有班级列表(且加上扩展内容,班级各类用户人数)
     * @return
     */
    List<Classes> searchClassList_Num(Integer sid);
    
    /**
     * 添加班级
     * @return
     */
    int insertClass(Classes classes);
    
    /**
     * 添加班级,设置管理教师
     * @return
     */
    int insertClass(Classes classes, String teacheres);
    
    /**
     * 删除班级
     * @return
     */
    int deleteClass(Long cid);
        
    /**
     * 修改班级班徽
     * @return
     */
    int updateClassLogo(Long cid,String clogo);    
    
    /**
     * 修改班级封面
     * @return
     */
    int updateClassImg(Long cid,String img);    
    
    /**
     * 修改班级信息
     * @return
     */
    int updateClassInfo(Classes classes);
    
//=====================================================================================    
    
    /**
     * 分页显示班级相册图片列表
     * @return
     */
    Map<String, Object> searchClassPhotoList(int page,int pagesize, Long cid);
    
    /**
     * 查询班级所有相册图片
     * @return
     */
    List<ClassPhoto> searchClassPhotoList(Long cid);
    
    /**
     * 添加班级相册图片
     * @return
     */
    long insertClassPhoto(ClassPhoto cp);
    
    /**
     * 修改班级相册图片
     * @return
     */
    int updateClassPhoto(ClassPhoto cp);
    
    /**
     * 删除班级相册图片
     * @return
     */
    int deleteClassPhoto(Long cpid);

//=====================================================================================
    
    /**
     * 创建班级相册
     * @param cpt
     * @return
     */
    int insertClassPhotoType(ClassPhotoType cpt);
    
    /**
     * 添加班级某一类相册图片
     * @return
     */
    long insertClassPhotoImg(ClassPhotoImg cpi);
    
    /**
     * 把相册图片设为该相册分类的封面
     * @return
     */
    int updateClassPhotoImg_face(Long cpiid);
    
    /**
     * 班级相册分类列表
     * @return
     */
    List<ClassPhotoType> searchClassPhotoTypeList(Long cid);
    
    /**
     * 班级相册图片列表
     * @return
     */
    List<ClassPhotoImg> searchClassPhotoImgList(Long cptid);
    
    /**
     * 根据条件查询班级相册中的图片
     * @param cpiid
     * @return
     */
    ClassPhotoImg searchClassPhotoImg(Long cpiid);
    
    /**
     * 删除班级相册图片
     * @return
     */
    int deleteClassPhotoImg(Long cpiid);
    
    /**
     * 修改用户相册分类封面
     * @return
     */
    int updateClassPhotoTypeCover(String img,Long cptid);
    
    /**
     * 查询班级相册
     * @param uptid
     * @return
     */
    ClassPhotoType searchClassPhotoType(Long cptid);
    
    
    // 新版
    /**
     * 点名
     * @param cid
     * @param crList
     * @return
     */
    int insertCallRoll(Long cid,List<NameingBean> crList);
    
    /**
     * 按天查询某班级一个月的考勤情况
     * @param month
     * @return
     */
    List<CallRollClass> searchCRSByDay(Long cid,String month);
    
    /**
     * 查询某班级某天的缺勤情况
     * @param cid
     * @param Day
     * @return
     */
    List<CallRoll> searchCRByDay(Long cid,String day);
    
    /**
     * 按天查询所有班级一个月的考勤情况
     * @param month
     * @return
     */
    List<CallRollSchool> searchCRSByDayAllClass(Integer sid,String month);
    
    /**
     * 按天查询所有班级的考勤情况
     * @param sid
     * @param day
     * @return
     */
    List<CallRollClass> searchCRCByDayAllClass(Integer sid,String day);
    
    /**
     * 按月查询所有班级的考勤情况
     * @param sid
     * @param month
     * @return
     */
    List<CallRollClass> searchCRCByMonthAllClass(Integer sid,String month);
    
    /**
     * 查询某班级某月的缺勤情况
     * @param cid
     * @param month
     * @return
     */
    List<CallRoll> searchCRByMonth(Long cid,String month);
    
}
